1. Technical Field
The present disclosure relates to data compression technologies and more specifically to lossless data compression with variable width codes.
2. Related Art
Data compression refers to representing input data with fewer data bits. The resulting compressed data may be processed (decompressed) at a later time to recover the original input data. Such compression and decompression are generally useful for storing or transmitting information in the form of fewer bits. In general, the ratio of the size of the compressed data to the input data is referred to as compression ratio.
Lossless data compression refers to approaches in which the decompressed data exactly matches the original data at least during normal operation. This is in contrast to lossy compression, where the decompressed data contains information less than the original data, but may obtain higher compression ratios. Lossless compression is generally desirable when compressing textual information, while lossy compression is often used when compressing image data (visual information).
Codes are integral to compression techniques. Typically a small portion of an input data (“string”) is encoded in the form of a corresponding code in generating the compressed data. The number of bits in a code is termed as its width. Codes with smaller width (fewer bits) are sought to be chosen to represent potentially repeating long strings (more bits) to obtain desired compression.
There are several compression techniques which use variable width codes, implying that different strings are encoded using codes of different widths. Such use of variable width codes may further enhance the compression ratio. LZW, LZMW and LZAP are some of the commonly known lossless data compression techniques using variable width codes.
In general, it is desirable that the lossless compression techniques provide for data compression while meeting one or more of requirements such as improving the compression ratio, reducing the memory space and/or processing requirements, etc.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.